[Android] 自定義ListView加入RadioGroup

由於需要做一個測驗類的東西,使用ListView發現Subitem除了文字都不能加,最後快崩潰就只好自己刻一個。

XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/booktitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:textColor="#000000" />
<RadioGroup
android:id="@+id/bookgroup"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/book1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:checked="false"
android:text="1" />
<RadioButton
android:id="@+id/book2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:checked="false"
android:text="2" />
<RadioButton
android:id="@+id/book3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:checked="false"
android:text="3" />
<RadioButton
android:id="@+id/book4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:checked="false"
android:text="4" />
<RadioButton
android:id="@+id/book5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:checked="false"
android:text="5" />
</RadioGroup>
</LinearLayout>
</LinearLayout>

Adapter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package com.example.microsoftapp;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.TextView;
public class BookAdapter extends BaseAdapter {
private LayoutInflater Bookflater;
CharSequence[] title = null;
CharSequence[] radiogroup = null;
public BookAdapter(Context ctxt, CharSequence[] title){
Bookflater = LayoutInflater.from(ctxt);
this.title = title;
this.radiogroup = radiogroup;
}
@Override
public int getCount() {
return title.length;
}
@Override
public Object getItem(int position) {
return title[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
BookView bookview;
if(convertView == null){
convertView = Bookflater.inflate(R.layout.booklistview, null);
bookview = new BookView(
(TextView) convertView.findViewById(R.id.booktitle));
convertView.setTag(bookview);
}
else{
bookview = (BookView) convertView.getTag();
}
bookview.title.setText(title[position]);
return convertView;
}
class BookView{
TextView title;
RadioGroup radiogroup;
public BookView(TextView title){
this.title = title;
this.radiogroup = radiogroup;
}
}
}

使用方法

1
2
3
4
String[] listtitle ;
CharSequence[] ListTitle = listtitle;
ListView listview ;
listview.setAdapter(new BookAdapter(this, ListTitle));

但目前RadioGroup還沒實作功能。